import { defineStore } from 'pinia'
import { ref } from 'vue'

// 定义 随访相关的Store
export const useVisitStore = defineStore(
  'visit',
  () => {
    // 随访基本信息
    const visit = ref<VisitItem>()
    // 随访对应的体检信息
    const visitCheckItem = ref<VisitCheckItem>()
    // 新增随访的患者信息
    const patient = ref<Patient>()
    //设置随访基本信息
    const setVisit = (val: any) => {
      visit.value = val
    }
    //设置随访对应的体检信息
    const setVisitCheckItem = (val: any) => {
      visitCheckItem.value = val
    }
    //设置新增随访的患者信息
    const setPatient = (val: any) => {
      patient.value = val
    }
    // 清理随访模块相关信息，退出时使用
    const clear = () => {
      visit.value = undefined
    }
    // 记得 return
    return {
      visit,
      patient,
      visitCheckItem,
      setVisit,
      setPatient,
      setVisitCheckItem,
      clear,
    }
  },
  // TODO: 持久化
  {
    //网页端配置
    //persist: true,
    //小程序端配置
    persist: {
      storage: {
        getItem(key) {
          return uni.getStorageSync(key)
        },
        setItem(key, value) {
          return uni.setStorageSync(key, value)
        },
      },
    },
  },
)

interface Patient {
  id: number //患者id
  doctorId: number //医生id
  name: string //患者姓名
  sex: string //患者性别
  age: string //患者年龄
  address: string //患者地址
  idNumber: string //患者身份证
  phoneNumber: string //患者电话
  sign: number //是否签约
  signHome: number //家庭签约
  homeId: number //家庭档案户主id
  createTime: string //创建档案的时间
  signTime: string //签约时间
  signYears: number //签约年限
  disease: string //疾病
}

interface VisitItem {
  id: number //随访id
  name: string //患者姓名
  sex: string //患者性别
  age: string //患者年龄
  disease: string //患者疾病
  doctorId: number //医生id
  patientId: number //患者id
  checkId: number //体检信息id
  symptoms: string //随访患者症状
  drugUsage: string //用药情况
  visitTime: string //随访时间
  visitWay: string //随访方式
  livingHabit: string //生活习惯
  visitSign: number //是否完成随访，0代表草稿，1代表未完成随访，2代表完成随访
  remark: string //备注
}

interface VisitCheckItem {
  id: number //患者id
  doctorId: number //体检医生id
  patientId: string //体检患者id
  healthTime: string //体检时间
  result: string //结果说明
  checkItemId: number //体检项目id
  bloodGlucose: number //血糖
  height: number //身高
  weight: number //体重
  temperature: number //体温
  pulseRate: number //脉率
  bloodPressure: string //血压
}
